<?php

/**
 * documentos actions.
 *
 * @package    auip
 * @subpackage documentos
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class documentosActions extends sfActions
{
  public function executeIndex(sfWebRequest $request)
  {
    $this->documentos_aplicacions = Doctrine_Core::getTable('DocumentosAplicacion')->createQuery('a')->execute();
  }

  public function executeShow(sfWebRequest $request)
  {
    $this->documentos_aplicacion = Doctrine_Core::getTable('DocumentosAplicacion')->find(array($request->getParameter('beca_id'),
                        $request->getParameter('usuario_id'),
                        $request->getParameter('tipo_documento_id')));
    $this->forward404Unless($this->documentos_aplicacion);
  }
  /************************************************************************************************************************/
  public function executeDatosdocumento(sfWebRequest $request){}
  public function executeGuardarinformaciondocumento(sfWebRequest $request)
  {
      //AQUI SE GUARDA LA INFORMACION DEL DOCUMENTO
  }
  public function executeNew(sfWebRequest $request)
  {
    $this->img = BecaTable::getBecaEncontrada($this->getUser()->getAttribute('id'));
    $this->tipo_documentos = Doctrine_Core::getTable('TipoDocumento')->createQuery('a')->addOrderBy('a.nombre asc')->execute();
    $this->id_beca = $this->getUser()->getAttribute('id'); 
    $this->id_usuario = $this->getUser()->getAttribute('email');
    $this->id_entidad = $this->getUser()->getAttribute('nom_uni');
  }
    
  public function executeRecibir(sfWebRequest $request)
  {
      $v = $request->getParameter('item');
      $v1 = $request->getParameter('valor_item');
      $this->getUser()->setAttribute('elemento', $v);      
      $this->getUser()->setAttribute('valor_elemento', $v1);      
  }
  
  public function executeSubir(sfWebRequest $request)
  { 
        $codigo_beca = $this->getUser()->getAttribute('id');  
        $codigo_usuario = $this->getUser()->getAttribute('email');        
        $tipo_documento = $this->getUser()->getAttribute('valor_elemento');
        $nombre_documento = $this->getUser()->getAttribute('elemento');        
        array();
        //se borran los dos campos para volver a usarlos
        $this->getUser()->setAttribute('elemento', '');
        $this->getUser()->setAttribute('valor_elemento', '');
        
        
        $output_dir = sfConfig::get('sf_upload_dir').'/archivos_aplicaciones/'.$codigo_beca.'/'.$codigo_usuario;
                
        if (!file_exists($output_dir)) 
        {
            @mkdir($output_dir, 0777 , true);            
        }
        else
        {
            //echo 'SI EXISTE';
        }             
        
        if(isset($_FILES["myfile"]))
        {
            $ret = array();
            $error =$_FILES["myfile"]["error"];
	
            $miArchivo  = $request->getFiles();                
            
            
            if(!is_array($miArchivo['myfile']['name'])) //single file
            { 	 	
                $nom = $miArchivo['myfile']['name'];                
                $nombre_archivo = explode('.', $nom);
                
                $nombre_archivo[0] = $this->nombreArchivo($codigo_usuario, $nombre_documento);
                $miArchivo['myfile']['name'] = $nombre_archivo[0].'.'.$nombre_archivo[1];      
                
                
                
                move_uploaded_file($miArchivo["myfile"]["tmp_name"], $output_dir.'/'.$nombre_archivo[0].'.'.$nombre_archivo[1]);
                @chmod($output_dir.'/'.$nombre_archivo[0].'.'.$nombre_archivo[1], 0777);
                @chown($output_dir.'/'.$nombre_archivo[0].'.'.$nombre_archivo[1], 'hernando');
                $this->Guardardocumento($codigo_beca, $codigo_usuario, $tipo_documento, $nombre_archivo[0].'.'.$nombre_archivo[1]);
                $ret[]= $miArchivo;               
                
            }
//            else  //Multiples archivos
//            {              
//                //$fileCount = count($_FILES["myfile"]["name"]);
//                $fileCount = count($miArchivo["myfile"]["name"]);                
//                for($i=0; $i < $fileCount; $i++)
//                {                    
//                    $nom = $miArchivo['myfile']['name'][$i];                
//                    
//                    $nombre_archivo = explode('.', $nom);                
//                    $nombre_archivo[0] = $this->nombreArchivo($codigo_usuario);
//                    $miArchivo['myfile']['name'][$i] = $nombre_archivo[0].'.'.$nombre_archivo[1].$i;
//                    move_uploaded_file($miArchivo["myfile"]["tmp_name"], $output_dir.'/'.$nombre_archivo[0].'.'.$nombre_archivo[1].$i);                
//                    $ret[]= $miArchivo;
//
//                    //$fileName = $_FILES["myfile"]["name"][$i];
//                    //move_uploaded_file($_FILES["myfile"]["tmp_name"][$i], $output_dir.$fileName);
//                    //$ret[]= $fileName;
//                    
//                }	
//            }            
            echo json_encode($ret);                        
            //print_r($ret);
        }    
  }
  protected function Guardardocumento($id_convocatoria, $id_usuario, $id_documento, $nombre_documento)
  {  
     //ESTA FUNCION GUARDA LA INFORMACION DEL DOCUMENTO EN LA BASE DATOS
     $nuevo_doc = new DocumentosAplicacion();
     $nuevo_doc->setBecaId($id_convocatoria);
     $nuevo_doc->setUsuarioId($id_usuario);
     $nuevo_doc->setTipoDocumentoId($id_documento);
     $nuevo_doc->setRuta($nombre_documento);
     $nuevo_doc->save();     
      
  }
  protected function nombreArchivo($codigo_usuario, $principio_del_nombre)
  {  //FUNCION QUE PERMITE CREAR EL NOMBRE DEL ARCHIVO    
      return $principio_del_nombre.'_'.UsuarioTable::getNombreUsuario($codigo_usuario)->getNombre().'_'.UsuarioTable::getNombreUsuario($codigo_usuario)->getApellidos();
  }
  public function executeBorrar(sfWebRequest $request)
  {
      $codigo_beca = $this->getUser()->getAttribute('id');
      $codigo_usuario = $this->getUser()->getAttribute('email');                  

      $output_dir = sfConfig::get('sf_upload_dir').'/archivos_aplicaciones/'.$codigo_beca.'/'.$codigo_usuario.'/';
                  
      if(isset($_POST["op"]) && ($_POST["op"] == "delete") && isset($_POST['name']))      
      {
	//$fileName =$_POST['name'];
        $fileName =$request->getParameter('name');
	
        $filePath = $output_dir. $fileName['myfile']['name'];	
        if (file_exists($filePath)) 
	{
            unlink($filePath);
        }        
        echo "se ha borrado el archivo ".$fileName['myfile']['name']; 
        
      }
  }
  public function executeEliminardocumento(sfWebRequest $request)
  {      
      $this->forward404Unless($documentos_aplicacion = Doctrine_Core::getTable('DocumentosAplicacion')->find( array($this->getUser()->getAttribute('id'), $this->getUser()->getAttribute('email'), $request->getParameter('item_valor') ) ), sprintf('Object documentos_aplicacion does not exist (%s).', $this->getUser()->getAttribute('id'), $this->getUser()->getAttribute('email'), $request->getParameter('item_valor')));
      $documentos_aplicacion->delete();
  }
  /************************************************************************************************************************/
  public function executeNew10(sfWebRequest $request)
  {
    $this->img = BecaTable::getBecaEncontrada($this->getUser()->getAttribute('id'));
    $this->form = new DocumentosAplicacionForm();    
    $this->form->setDefault('beca_id', $this->getUser()->getAttribute('id'));        
    $this->form->setDefault('usuario_id', $this->getUser()->getAttribute('email'));    
    $this->form->setDefault('nombre_universidad', $this->getUser()->getAttribute('nom_uni'));    
    $this->listado = DocumentosAplicacionTable::getListaDocs($this->getUser()->getAttribute('id'), $this->getUser()->getAttribute('email'));
  }

  public function executeCreate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST));

    $this->form = new DocumentosAplicacionForm();

    $this->processForm($request, $this->form);

    $this->setTemplate('new');
  }
  
  public function executeTerminar(sfWebRequest $request) 
  {
      $this->redirect('becas_aplicables/index');
  }

  public function executeEdit(sfWebRequest $request)
  {
    $this->forward404Unless($documentos_aplicacion = Doctrine_Core::getTable('DocumentosAplicacion')->find(array($request->getParameter('beca_id'),
  $request->getParameter('usuario_id'),
  $request->getParameter('tipo_documento_id'))), sprintf('Object documentos_aplicacion does not exist (%s).', $request->getParameter('beca_id'),
  $request->getParameter('usuario_id'),
  $request->getParameter('tipo_documento_id')));
    $this->form = new DocumentosAplicacionForm($documentos_aplicacion);
  }

  public function executeUpdate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
    $this->forward404Unless($documentos_aplicacion = Doctrine_Core::getTable('DocumentosAplicacion')->find(array($request->getParameter('beca_id'),
  $request->getParameter('usuario_id'),
  $request->getParameter('tipo_documento_id'))), sprintf('Object documentos_aplicacion does not exist (%s).', $request->getParameter('beca_id'),
  $request->getParameter('usuario_id'),
  $request->getParameter('tipo_documento_id')));
    $this->form = new DocumentosAplicacionForm($documentos_aplicacion);

    $this->processForm($request, $this->form);

    $this->setTemplate('edit');
  }

  public function executeDelete(sfWebRequest $request)
  {
    $request->checkCSRFProtection();
    $this->forward404Unless($documentos_aplicacion = Doctrine_Core::getTable('DocumentosAplicacion')->find(array($request->getParameter('beca_id'), $request->getParameter('usuario_id'), $request->getParameter('tipo_documento_id'))), sprintf('Object documentos_aplicacion does not exist (%s).', $request->getParameter('beca_id'), $request->getParameter('usuario_id'), $request->getParameter('tipo_documento_id')));    
    $documentos_aplicacion->delete();
    //$this->redirect('documentos/new');
  }

  protected function processForm(sfWebRequest $request, sfForm $form)
  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    if ($form->isValid())
    {        
      $file = $this->form->getValue('ruta');
      $id_beca = $this->form->getValue('beca_id');
      $codigo_documento = $this->form->getValue('tipo_documento_id');
      $codigo_usuario = $this->form->getValue('usuario_id');      
      
      $file->setNameFile('doc_'.UsuarioTable::getNombreUsuario($codigo_usuario)->getNombre().' '.UsuarioTable::getNombreUsuario($codigo_usuario)->getApellidos().'_'.$codigo_usuario);
      $file->setPath(sfConfig::get('sf_upload_dir').'/archivos_aplicaciones/'.$this->getUser()->getAttribute('id').'/'.$codigo_usuario);
      $documentos_aplicacion = $form->save();      
      //$this->redirect('documentos/edit?beca_id='.$documentos_aplicacion->getBecaId().'&usuario_id='.$documentos_aplicacion->getUsuarioId().'&tipo_documento_id='.$documentos_aplicacion->getTipoDocumentoId());
      $this->getUser()->setAttribute('mensaje', 'Se ha ADICIONADO un NUEVO documento ');
      $this->redirect('documentos/new');
    }
  }
}
